package main

import (
	"fmt"
	"sync"
)

var wg sync.WaitGroup

func consumer(msg <-chan int)  {
	defer wg.Done()
	fmt.Println(<-msg)
}
func main() {
	var msg chan int
	msg=make(chan int,1)

	wg.Add(1)
	go consumer(msg) //必须现有消费者，才能生产
	msg<-1 //当放数据时会阻塞，阻塞前会获取一把锁。
	//这把锁什么时候释放？因为这时没有缓冲空间，所以要等到数据被消费之后才能释放

	wg.Wait()


}
